home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Web-Publishing / HTML-Editoren / Alpha ƒ / Tcl / Modes / HTML and CSS Modes / html40.tcl < prev    next >
Encoding:
Text File  |  2001-01-12  |  40.2 KB  |  1,079 lines

  1. ## -*-Tcl-*-
  2.  # ###################################################################
  3.  #  HTML mode - tools for editing HTML documents
  4.  # 
  5.  #  FILE: "html40.tcl"
  6.  #                                    created: 97-12-20 15.02.44 
  7.  #                                last update: 01-01-01 19.17.38 
  8.  #  Author: Johan Linde
  9.  #  E-mail: <alpha_www_tools@go.to>
  10.  #     www: <http://go.to/alpha_www_tools>
  11.  #  
  12.  # Version: 3.0
  13.  # 
  14.  # Copyright 1996-2001 by Johan Linde
  15.  #  
  16.  # This program is free software; you can redistribute it and/or modify
  17.  # it under the terms of the GNU General Public License as published by
  18.  # the Free Software Foundation; either version 2 of the License, or
  19.  # (at your option) any later version.
  20.  # 
  21.  # This program is distributed in the hope that it will be useful,
  22.  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  23.  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24.  # GNU General Public License for more details.
  25.  # 
  26.  # You should have received a copy of the GNU General Public License
  27.  # along with this program; if not, write to the Free Software
  28.  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  29.  # 
  30.  # ###################################################################
  31.  ##
  32.  
  33. #===============================================================================
  34. # This file defines all HTML elements
  35. # The following arrays are defined here or elsewhere:
  36. # html::ElemAttrRequired(<element>) = the list of required attributes for the element
  37. # html::ElemAttrOptional(<element>) = the list of optional attributes for the element
  38. # html::ElemAttrUsed(<element>)     = the list of attributes always asked about
  39. #                                     (the ones marked "Always ask about" in the Use
  40. #                                     Attributes dialog)
  41. # html::ElemAttrHidden(<element>)   = the list of attributes never asked about
  42. #                                     (the ones marked "Never ask about" in the Use
  43. #                                     Attributes dialog)
  44. # html::ElemAttrOverride(<element>) = the list of attributes checked to "Override 
  45. #                                     global setting" in  the Use Attributes dialog
  46. # html::ElemExtension(<element>)    = the list of attributes which are extensions to HTML 4
  47. # html::ElemDeprecated(<element>)   = the list of attributes which are deprecated in HTML 4
  48. # html::ElemLayout(<element>)       = the layout of the element in the text
  49. # html::ElemMayContain(<element>)   = the valid content of the element (used for validation)
  50. # html::AttrType(<attribute>)        = the type of the attribut
  51. # html::AttrType(<element>%<attribute>) = the same but for a specific element
  52. # html::AttrChoices(<attribute>)    = list of allowed values for attributes of type 'choices' 
  53. #                                     or similar
  54. # html::AttrChoices(<element>%<attribute>) = the same but for a specific element
  55. # html::AttrRange(<attribute>)      = allowed range of values for attributes taking a 
  56. #                                     numerical value
  57. # html::AttrRange(<element>%<attribute>) = the same but for a specific element
  58. # The following procs are defined for each attribute type:
  59. # html::BuildDialog<type>    = the proc for building the attribute dialog
  60. #                              (found in htmlEngine.tcl)
  61. # html::ReadDialog<type>     = the proc for reading the attribute dialog
  62. #                              (found in htmlEngine.tcl)
  63. # html::GetDialog<type>      = the proc for parsing the attribute value in a document
  64. #                              and get a default value for the attribute dialog
  65. #                              (found in htmlEditing.tcl)
  66. # html::StatusBar<type>      = the proc for giving the attribute a value in the status bar
  67. #                              (found in htmlStatusBar.tcl)
  68. #                              
  69. # The following procs are defined for some attribute types:
  70. # html::CheckAttribute<type> = check if the attribute value is valid
  71. #                              (found in htmlValidate.tcl)
  72. # html::Complete<type>       = to complete the attribute value when using electric completions
  73. #                              (found in HTMLCompletions.tcl)
  74. # The following procs are defined for some elements:
  75. # html::MustContainCheck<element> = check if the element has the required content
  76. #                                   (found in htmlValidate.tcl)
  77. # html::<element>test             = extra check that the right attributes are set in the
  78. #                                   attribute dialog (found in htmlEngine.tcl)
  79. #===============================================================================
  80.  
  81. proc html40.tcl {} {}
  82.  
  83. proc html::FindOptionalLayout {elem} {
  84.     global HTMLmodeVars html::ElemLayout
  85.     if {[lcontains HTMLmodeVars(optionalClosing) $elem]} {
  86.         if {![info exists html::ElemLayout($elem)] || [regexp {open} [set html::ElemLayout($elem)]]} {
  87.             switch $elem {
  88.                 COLGROUP -
  89.                 TBODY -
  90.                 TFOOT -
  91.                 THEAD -
  92.                 DT -
  93.                 LI -
  94.                 OPTION {set html::ElemLayout($elem) cr1}
  95.                 TR -
  96.                 P {set html::ElemLayout($elem) cr2}
  97.                 DD -
  98.                 TD -
  99.                 TH {set html::ElemLayout($elem) cr0}
  100.             }
  101.         }
  102.     } elseif {![info exists html::ElemLayout($elem)] || ![regexp {open} [set html::ElemLayout($elem)]]} {
  103.         switch $elem {
  104.             COLGROUP -
  105.             TBODY -
  106.             TFOOT -
  107.             THEAD -
  108.             TR -
  109.             P {set html::ElemLayout($elem) open11}
  110.             DT -
  111.             LI -
  112.             OPTION {set html::ElemLayout($elem) open10}
  113.             DD -
  114.             TD -
  115.             TH {set html::ElemLayout($elem) open00}
  116.         }
  117.     }
  118. }
  119.  
  120. #===============================================================================
  121. # Global definition
  122. #===============================================================================
  123.  
  124. set html::AttrType(ABBR=) other
  125. set html::AttrType(ABOVE=) other
  126. set html::AttrType(ACCEPT=) contenttypes
  127. set html::AttrType(ACCEPT-CHARSET=) charsets
  128. set html::AttrType(ACCESSKEY=) character
  129. set html::AttrType(ACTION=) url
  130. set html::AttrType(ALIGN=) choices
  131. set html::AttrChoices(ALIGN=) {CENTER RIGHT LEFT JUSTIFY}
  132. set html::AttrType(ALINK=) color
  133. set html::AttrType(ALT=) othernotrim
  134. set html::AttrType(ARCHIVE=) other
  135. set html::AttrType(AXIS=) other
  136. set html::AttrType(BACKGROUND=) url
  137. set html::AttrType(BELOW=) other
  138. set html::AttrType(BEHAVIOR=) choices
  139. set html::AttrChoices(BEHAVIOR=) {SLIDE ALTERNATE SCROLL}
  140. set html::AttrType(BGCOLOR=) color
  141. set html::AttrType(BGPROPERTIES=) choices
  142. set html::AttrChoices(BGPROPERTIES=) FIXED
  143. set html::AttrType(BORDER=) integer
  144. set html::AttrRange(BORDER=) {0:i}
  145. set html::AttrType(BORDERCOLOR=) color
  146. set html::AttrType(BORDERCOLORDARK=) color
  147. set html::AttrType(BORDERCOLORLIGHT=) color
  148. set html::AttrType(CELLSPACING=) length
  149. set html::AttrRange(CELLSPACING=) {0:i}
  150. set html::AttrType(CELLPADDING=) length
  151. set html::AttrRange(CELLPADDING=) {0:i}
  152. set html::AttrType(CHALLENGE=) other
  153. set html::AttrType(CHAR=) character
  154. set html::AttrType(CHAROFF=) length
  155. set html::AttrRange(CHAROFF=) {0:i}
  156. set html::AttrType(CHARSET=) charset
  157. set html::AttrType(CHECKED) flag
  158. set html::AttrType(CITE=) url
  159. set html::AttrType(CLASS=) other
  160. set html::AttrType(CLASSID=) url
  161. set html::AttrType(CLEAR=) choices
  162. set html::AttrChoices(CLEAR=) {ALL LEFT RIGHT NONE}
  163. set html::AttrType(CLIP=) other
  164. set html::AttrType(CODE=) other
  165. set html::AttrType(CODEBASE=) url
  166. set html::AttrType(CODETYPE=) contenttype
  167. set html::AttrType(COLOR=) color
  168. set html::AttrType(COLS=) multilengths
  169. set html::AttrRange(COLS=) {1:i}
  170. set html::AttrType(COLSPAN=) integer
  171. set html::AttrRange(COLSPAN=) {1:i}
  172. set html::AttrType(COMPACT) flag
  173. set html::AttrType(CONTENT=) other
  174. set html::AttrType(CONTROLS) flag
  175. set html::AttrType(COORDS=) coords
  176. set html::AttrRange(COORDS=) {0:i}
  177. set html::AttrType(DATA=) url
  178. set html::AttrType(DATETIME=) datetime
  179. set html::AttrType(DECLARE) flag
  180. set html::AttrType(DEFER) flag
  181. set html::AttrType(DIR=) choices
  182. set html::AttrChoices(DIR=) {LTR RTL}
  183. set html::AttrType(DIRECTION=) choices
  184. set html::AttrChoices(DIRECTION=) {RIGHT LEFT}
  185. set html::AttrType(DISABLED) flag
  186. set html::AttrType(DYNSRC=) url
  187. set html::AttrType(ENCTYPE=) contenttype
  188. set html::AttrType(FACE=) other
  189. set html::AttrType(FOR=) id
  190. set html::AttrType(FRAME=) choices
  191. set html::AttrChoices(FRAME=) {BORDER VOID ABOVE BELOW HSIDES VSIDES LHS RHS BOX}
  192. set html::AttrType(FRAMEBORDER=) choices
  193. set html::AttrChoices(FRAMEBORDER=) {1 0}
  194. set html::AttrType(FRAMESPACING=) integer
  195. set html::AttrRange(FRAMESPACING=) {0:i}
  196. set html::AttrType(GUTTER=) integer
  197. set html::AttrRange(GUTTER=) {0:i}
  198. set html::AttrType(HEADERS=) ids
  199. set html::AttrType(HEIGHT=) length
  200. set html::AttrRange(HEIGHT=) {1:i}
  201. set html::AttrType(HIDDEN=) choices
  202. set html::AttrChoices(HIDDEN=) {TRUE FALSE}
  203. set html::AttrType(HREF=) url
  204. set html::AttrType(HREFLANG=) languagecode
  205. set html::AttrType(HSPACE=) integer
  206. set html::AttrRange(HSPACE=) {0:i}
  207. set html::AttrType(HTTP-EQUIV=) id
  208. set html::AttrType(ID=) id
  209. set html::AttrType(ISMAP) flag
  210. set html::AttrType(LABEL=) other
  211. set html::AttrType(LANG=) languagecode
  212. set html::AttrType(LANGUAGE=) other
  213. set html::AttrType(LEFT=) integer
  214. set html::AttrRange(LEFT=) {-i:i}
  215. set html::AttrType(LEFTMARGIN=) integer
  216. set html::AttrRange(LEFTMARGIN=) {0:i}
  217. set html::AttrType(LINK=) color
  218. set html::AttrType(LONGDESC=) url
  219. set html::AttrType(LOWSRC=) url
  220. set html::AttrType(LOOP=) integer
  221. set html::AttrRange(LOOP=) {-1:i}
  222. set html::AttrType(MARGINWIDTH=) integer
  223. set html::AttrRange(MARGINWIDTH=) {0:i}
  224. set html::AttrType(MARGINHEIGHT=) integer
  225. set html::AttrRange(MARGINHEIGHT=) {0:i}
  226. set html::AttrType(MAYSCRIPT) flag
  227. set html::AttrType(MAXLENGTH=) integer
  228. set html::AttrRange(MAXLENGTH=) {1:i}
  229. set html::AttrType(MEDIA=) mediadesc
  230. set html::AttrType(METHOD=) choices
  231. set html::AttrChoices(METHOD=) {POST GET}
  232. set html::AttrType(MULTIPLE) flag
  233. set html::AttrType(NAME=) other
  234. set html::AttrType(NOHREF) flag
  235. set html::AttrType(NORESIZE) flag
  236. set html::AttrType(NOSHADE) flag
  237. set html::AttrType(NOWRAP) flag
  238. set html::AttrType(OBJECT=) other
  239. set html::AttrType(PAGEX=) integer
  240. set html::AttrRange(PAGEX=) {0:i}
  241. set html::AttrType(PAGEY=) integer
  242. set html::AttrRange(PAGEY=) {0:i}
  243. set html::AttrType(PALETTE=) choices
  244. set html::AttrChoices(PALETTE=) {FOREGROUND BACKGROUND}
  245. set html::AttrType(PLUGINSURL=) url
  246. set html::AttrType(PLUGINSPAGE=) url
  247. set html::AttrType(POINT-SIZE=) integer
  248. set html::AttrRange(POINT-SIZE=) {1:i}
  249. set html::AttrType(PROFILE=) url
  250. set html::AttrType(PROMPT=) other
  251. set html::AttrType(READONLY) flag
  252. set html::AttrType(REL=) linktypes
  253. set html::AttrType(REV=) linktypes
  254. set html::AttrType(ROWS=) multilengths
  255. set html::AttrRange(ROWS=) {1:i}
  256. set html::AttrType(ROWSPAN=) integer
  257. set html::AttrRange(ROWSPAN=) {1:i}
  258. set html::AttrType(RULES=) choices
  259. set html::AttrChoices(RULES=) {GROUPS ROWS COLS ALL NONE}
  260. set html::AttrType(SCHEME=) other
  261. set html::AttrType(SCOPE=) choices
  262. set html::AttrChoices(SCOPE=) {ROW COL ROWGROUP COLGROUP}
  263. set html::AttrType(SCROLLAMOUNT=) integer
  264. set html::AttrRange(SCROLLAMOUNT=) {1:i}
  265. set html::AttrType(SCROLLDELAY=) integer
  266. set html::AttrRange(SCROLLDELAY=) {1:i}
  267. set html::AttrType(SCROLLING=) choices
  268. set html::AttrChoices(SCROLLING=) {YES NO AUTO}
  269. set html::AttrType(SELECTED) flag
  270. set html::AttrType(SHAPE=) choices
  271. set html::AttrChoices(SHAPE=) {RECT CIRCLE POLY DEFAULT}
  272. set html::AttrType(SIZE=) integer
  273. set html::AttrRange(SIZE=) {1:i}
  274. set html::AttrType(SPAN=) integer
  275. set html::AttrRange(SPAN=) {1:i}
  276. set html::AttrType(SRC=) url
  277. set html::AttrType(STANDBY=) other
  278. set html::AttrType(START=) choices
  279. set html::AttrChoices(START=) {FILEOPEN MOUSEOVER}
  280. set html::AttrType(STYLE=) other
  281. set html::AttrType(SUMMARY=) other
  282. set html::AttrType(TABINDEX=) integer
  283. set html::AttrRange(TABINDEX=) {0:32767}
  284. set html::AttrType(TARGET=) frametarget
  285. set html::AttrType(TEXT=) color
  286. set html::AttrType(TITLE=) other
  287. set html::AttrType(TOP=) integer
  288. set html::AttrRange(TOP=) {-i:i}
  289. set html::AttrType(TOPMARGIN=) integer
  290. set html::AttrRange(TOPMARGIN=) {0:i}
  291. set html::AttrType(TYPE=) choices
  292. set html::AttrChoices(TYPE=) {DISC CIRCLE SQUARE}
  293. set html::AttrType(UNITS=) choices
  294. set html::AttrChoices(UNITS=) {PIXELS EN}
  295. set html::AttrType(USEMAP=) url
  296. set html::AttrType(VALIGN=) choices
  297. set html::AttrChoices(VALIGN=) {BASELINE BOTTOM MIDDLE TOP}
  298. set html::AttrType(VALUE=) other
  299. set html::AttrType(VALUETYPE=) choices
  300. set html::AttrChoices(VALUETYPE=) {REF OBJECT DATA}
  301. set html::AttrType(VISIBILITY=) choices
  302. set html::AttrChoices(VISIBILITY=) {SHOW HIDDEN INHERIT}
  303. set html::AttrType(VLINK=) color
  304. set html::AttrType(VSPACE=) integer
  305. set html::AttrRange(VSPACE=) {0:i}
  306. set html::AttrType(WIDTH=) length
  307. set html::AttrRange(WIDTH=) {1:i}
  308. set html::AttrType(WRAP=) choices
  309. set html::AttrChoices(WRAP=) {VIRTUAL PHYSICAL OFF}
  310. set html::AttrType(Z-INDEX=) integer
  311. set html::AttrRange(Z-INDEX=) {1:i}
  312. # for eventhandlers with need both a case sensitive version + uppercase
  313. set html::AttrType(onAbort=) eventhandler
  314. set html::AttrType(onBlur=) eventhandler
  315. set html::AttrType(onChange=) eventhandler
  316. set html::AttrType(onClick=) eventhandler
  317. set html::AttrType(onDblClick=) eventhandler
  318. set html::AttrType(onError=) eventhandler
  319. set html::AttrType(onFocus=) eventhandler
  320. set html::AttrType(onKeyDown=) eventhandler
  321. set html::AttrType(onKeyPress=) eventhandler
  322. set html::AttrType(onKeyUp=) eventhandler
  323. set html::AttrType(onLoad=) eventhandler
  324. set html::AttrType(onMouseDown=) eventhandler
  325. set html::AttrType(onMouseMove=) eventhandler
  326. set html::AttrType(onMouseOut=) eventhandler
  327. set html::AttrType(onMouseOver=) eventhandler
  328. set html::AttrType(onMouseUp=) eventhandler
  329. set html::AttrType(onReset=) eventhandler
  330. set html::AttrType(onSelect=) eventhandler
  331. set html::AttrType(onSubmit=) eventhandler
  332. set html::AttrType(onUnload=) eventhandler
  333. set html::AttrType(ONABORT=) eventhandler
  334. set html::AttrType(ONBLUR=) eventhandler
  335. set html::AttrType(ONCHANGE=) eventhandler
  336. set html::AttrType(ONCLICK=) eventhandler
  337. set html::AttrType(ONDBLCLICK=) eventhandler
  338. set html::AttrType(ONERROR=) eventhandler
  339. set html::AttrType(ONFOCUS=) eventhandler
  340. set html::AttrType(ONKEYDOWN=) eventhandler
  341. set html::AttrType(ONKEYPRESS=) eventhandler
  342. set html::AttrType(ONKEYUP=) eventhandler
  343. set html::AttrType(ONLOAD=) eventhandler
  344. set html::AttrType(ONMOUSEDOWN=) eventhandler
  345. set html::AttrType(ONMOUSEMOVE=) eventhandler
  346. set html::AttrType(ONMOUSEOUT=) eventhandler
  347. set html::AttrType(ONMOUSEOVER=) eventhandler
  348. set html::AttrType(ONMOUSEUP=) eventhandler
  349. set html::AttrType(ONRESET=) eventhandler
  350. set html::AttrType(ONSELECT=) eventhandler
  351. set html::AttrType(ONSUBMIT=) eventhandler
  352. set html::AttrType(ONUNLOAD=) eventhandler
  353.  
  354. #===============================================================================
  355. # Element definitions
  356. #===============================================================================
  357.  
  358. # A
  359. set html::ElemAttrOptional(A)    {HREF= HREFLANG= NAME= TARGET= CHARSET= TYPE= SHAPE= COORDS=
  360. ACCESSKEY= TABINDEX= REL= REV= onFocus= onBlur=}
  361. ensureset html::ElemAttrUsed(A) {HREF= NAME= TARGET=}
  362. ensureset html::ElemLayout(A) nocr
  363. set html::AttrType(A%TYPE=) contenttype
  364. set html::AttrType(A%NAME=) anchor
  365.  
  366. # ABBR
  367. set html::ElemAttrOptional(ABBR) {}
  368. ensureset html::ElemLayout(ABBR) nocr
  369.  
  370. # ACRONYM
  371. set html::ElemAttrOptional(ACRONYM) {}
  372. ensureset html::ElemLayout(ACRONYM) nocr
  373.  
  374. # ADDRESS
  375. set html::ElemAttrOptional(ADDRESS) {}
  376. ensureset html::ElemLayout(ADDRESS) cr0
  377.  
  378. # APPLET
  379. set html::ElemAttrRequired(APPLET)    {WIDTH= HEIGHT=}
  380. set html::ElemAttrOptional(APPLET)     {CODE= CODEBASE= ARCHIVE= OBJECT= HSPACE= VSPACE= ALIGN= NAME= ALT=
  381. MAYSCRIPT}
  382. ensureset html::ElemAttrUsed(APPLET)    {WIDTH= HEIGHT= CODE= CODEBASE= ALIGN= }
  383. set html::ElemExtension(APPLET) {MAYSCRIPT}
  384. ensureset html::ElemLayout(APPLET) cr2
  385. set html::AttrChoices(APPLET%ALIGN=)    {TOP MIDDLE BOTTOM LEFT RIGHT}
  386.  
  387. # AREA
  388. set html::ElemAttrRequired(AREA) {ALT=}
  389. set html::ElemAttrOptional(AREA)    {SHAPE= COORDS= TARGET= HREF= NOHREF ACCESSKEY= TABINDEX= onFocus= onBlur=}
  390. ensureset html::ElemAttrUsed(AREA)    {ALT= SHAPE= COORDS= TARGET= HREF= NOHREF}
  391. ensureset html::ElemLayout(AREA) open11
  392.  
  393. # B
  394. set html::ElemAttrOptional(B) {}
  395. ensureset html::ElemLayout(B) nocr
  396.  
  397. # BASE
  398. set html::ElemAttrOptional(BASE)    {HREF= TARGET=}
  399. ensureset html::ElemAttrUsed(BASE) {HREF= TARGET=}
  400. ensureset html::ElemLayout(BASE) open11
  401.  
  402. # BASEFONT
  403. set html::ElemAttrRequired(BASEFONT)    {SIZE=}
  404. set html::ElemAttrOptional(BASEFONT) {COLOR= FACE= ID=}
  405. ensureset html::ElemAttrUsed(BASEFONT) {SIZE= COLOR= FACE=}
  406. set html::AttrRange(BASEFONT%SIZE=)    {1:7}
  407. ensureset html::ElemLayout(BASEFONT) open11
  408.  
  409. # BDO
  410. set html::ElemAttrRequired(BDO) {DIR=}
  411. set html::ElemAttrOptional(BDO) {LANG=}
  412. ensureset html::ElemAttrUsed(BDO) {DIR= LANG=}
  413. ensureset html::ElemLayout(BDO) cr0
  414.  
  415. # BIG
  416. set html::ElemAttrOptional(BIG) {}
  417. ensureset html::ElemLayout(BIG) nocr
  418.  
  419. # BLOCKQUOTE
  420. set html::ElemAttrOptional(BLOCKQUOTE) {CITE=}
  421. ensureset html::ElemLayout(BLOCKQUOTE) cr2
  422.  
  423. # BODY
  424. set html::ElemAttrOptional(BODY)    {BACKGROUND= BGPROPERTIES= BGCOLOR= TEXT= LINK= VLINK= ALINK=
  425. LEFTMARGIN= TOPMARGIN= onLoad= onUnload=}
  426. ensureset html::ElemAttrUsed(BODY) {BACKGROUND= BGCOLOR= TEXT= LINK= VLINK=}
  427. set html::ElemExtension(BODY) {BGPROPERTIES= LEFTMARGIN= TOPMARGIN=}
  428. set html::ElemDeprecated(BODY) {BACKGROUND= BGCOLOR= TEXT= LINK= VLINK= ALINK=}
  429. ensureset html::ElemLayout(BODY) cr2
  430.  
  431. # BR
  432. set html::ElemAttrOptional(BR)    {CLEAR=}
  433. ensureset html::ElemAttrUsed(BR) {CLEAR=}
  434. set html::ElemDeprecated(BR) {CLEAR=}
  435. ensureset html::ElemLayout(BR) open01
  436.  
  437. # BUTTON
  438. set html::ElemAttrOptional(BUTTON) {NAME= VALUE= TYPE= DISABLED ACCESSKEY= TABINDEX= onFocus= onBlur=}
  439. ensureset html::ElemAttrUsed(BUTTON) {NAME= VALUE= TYPE= DISABLED}
  440. ensureset html::ElemLayout(BUTTON) cr0
  441. set html::AttrChoices(BUTTON%TYPE=) {BUTTON RESET SUBMIT}
  442.  
  443. # CAPTION
  444. set html::ElemAttrOptional(CAPTION)    {ALIGN=}
  445. set html::AttrChoices(CAPTION%ALIGN=)    {BOTTOM TOP LEFT RIGHT}
  446. ensureset html::ElemAttrUsed(CAPTION) {ALIGN=}
  447. set html::ElemDeprecated(CAPTION) {ALIGN=}
  448. ensureset html::ElemLayout(CAPTION) cr0
  449.  
  450. # CENTER
  451. set html::ElemAttrOptional(CENTER) {}
  452. ensureset html::ElemLayout(CENTER) cr2
  453.  
  454. # CITE
  455. set html::ElemAttrOptional(CITE) {}
  456. ensureset html::ElemLayout(CITE) nocr
  457.  
  458. # CODE
  459. set html::ElemAttrOptional(CODE) {}
  460. ensureset html::ElemLayout(CODE) nocr
  461.  
  462. # COL
  463. set html::ElemAttrOptional(COL)    {SPAN= ALIGN= VALIGN= WIDTH= CHAR= CHAROFF=}
  464. ensureset html::ElemAttrUsed(COL) {SPAN= ALIGN= VALIGN= WIDTH=}
  465. set html::AttrType(COL%WIDTH=) multilength
  466. set html::AttrChoices(COL%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  467. ensureset html::ElemLayout(COL) open11
  468.  
  469. # COLGROUP
  470. set html::ElemAttrOptional(COLGROUP)    {SPAN= ALIGN= VALIGN= WIDTH= CHAR= CHAROFF=}
  471. set html::AttrType(COLGROUP%WIDTH=) multilength
  472. set html::AttrChoices(COLGROUP%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  473. ensureset html::ElemAttrUsed(COLGROUP) {SPAN= ALIGN= VALIGN= WIDTH=}
  474. html::FindOptionalLayout COLGROUP
  475.  
  476. # DD
  477. set html::ElemAttrOptional(DD)    {}
  478. html::FindOptionalLayout DD
  479.  
  480. # DEL
  481. set html::ElemAttrOptional(DEL) {CITE= DATETIME=}
  482. ensureset html::ElemAttrUsed(DEL) {CITE= DATETIME=}
  483. ensureset html::ElemLayout(DEL) cr0
  484.  
  485. # DFN
  486. set html::ElemAttrOptional(DFN) {}
  487. ensureset html::ElemLayout(DFN) nocr
  488.  
  489. # DIR
  490. set html::ElemAttrOptional(DIR) {COMPACT}
  491. ensureset html::ElemLayout(DIR) cr2
  492.  
  493. # DIV
  494. set html::ElemAttrOptional(DIV)    {ALIGN=}
  495. ensureset html::ElemAttrUsed(DIV) {ALIGN=}
  496. set html::ElemDeprecated(DIV) {ALIGN=}
  497. ensureset html::ElemLayout(DIV) cr2
  498.  
  499. # DL
  500. set html::ElemAttrOptional(DL) {COMPACT}
  501. set html::ElemDeprecated(DL) {COMPACT}
  502. ensureset html::ElemLayout(DL) cr2
  503.  
  504. # DT
  505. set html::ElemAttrOptional(DT) {}
  506. html::FindOptionalLayout DT
  507.  
  508. # EM
  509. set html::ElemAttrOptional(EM) {}
  510. ensureset html::ElemLayout(EM) nocr
  511.  
  512. # FIELDSET
  513. set html::ElemAttrOptional(FIELDSET) {}
  514. ensureset html::ElemLayout(FIELDSET) cr2
  515.  
  516. # FONT
  517. set html::ElemAttrOptional(FONT)    {SIZE= COLOR= FACE= POINT-SIZE=}
  518. ensureset html::ElemAttrUsed(FONT)    {SIZE= COLOR= FACE=}
  519. set html::ElemExtension(FONT) {POINT-SIZE=}
  520. set html::AttrRange(FONT%SIZE=)    {1:7}
  521. ensureset html::ElemLayout(FONT) nocr
  522.  
  523. # FORM
  524. set html::ElemAttrRequired(FORM) {ACTION=}
  525. set html::ElemAttrOptional(FORM)    {METHOD= ENCTYPE= TARGET= ACCEPT-CHARSET= ACCEPT= NAME= onReset= onSubmit=}
  526. ensureset html::ElemAttrUsed(FORM) {ACTION= METHOD=}
  527. ensureset html::ElemLayout(FORM) cr2
  528.  
  529. # FRAME
  530. set html::ElemAttrOptional(FRAME)    {SRC= NAME= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  531. NORESIZE FRAMEBORDER= LONGDESC= BORDERCOLOR=}
  532. ensureset html::ElemAttrUsed(FRAME)    {SRC= NAME= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  533. NORESIZE FRAMEBORDER=}
  534. set html::ElemExtension(FRAME) {BORDERCOLOR=}
  535. ensureset html::ElemLayout(FRAME) open11
  536. set html::AttrType(FRAME%NAME=) targetname
  537.  
  538. # FRAMESET
  539. set html::ElemAttrOptional(FRAMESET) {ROWS= COLS= FRAMEBORDER= BORDER= BORDERCOLOR= FRAMESPACING= onLoad= onUnload=}
  540. ensureset html::ElemAttrUsed(FRAMESET) {ROWS= COLS=}
  541. set html::ElemExtension(FRAMESET) {FRAMEBORDER= BORDER= BORDERCOLOR= FRAMESPACING=}
  542. ensureset html::ElemLayout(FRAMESET) cr2
  543.  
  544. # H1
  545. set html::ElemAttrOptional(H1)    {ALIGN=}
  546. ensureset html::ElemAttrUsed(H1) {ALIGN=}
  547. set html::ElemDeprecated(H1)    {ALIGN=}
  548. ensureset html::ElemLayout(H1) cr1
  549.  
  550. # H2
  551. set html::ElemAttrOptional(H2)    {ALIGN=}
  552. ensureset html::ElemAttrUsed(H2)    {ALIGN=}
  553. set html::ElemDeprecated(H2)        {ALIGN=}
  554. ensureset html::ElemLayout(H2) cr1
  555.  
  556. # H3
  557. set html::ElemAttrOptional(H3)    {ALIGN=}
  558. ensureset html::ElemAttrUsed(H3)    {ALIGN=}
  559. set html::ElemDeprecated(H3)        {ALIGN=}
  560. ensureset html::ElemLayout(H3) cr1
  561.  
  562. # H4
  563. set html::ElemAttrOptional(H4)    {ALIGN=}
  564. ensureset html::ElemAttrUsed(H4)    {ALIGN=}
  565. set html::ElemDeprecated(H4)        {ALIGN=}
  566. ensureset html::ElemLayout(H4) cr1
  567.  
  568. # H5
  569. set html::ElemAttrOptional(H5)    {ALIGN=}
  570. ensureset html::ElemAttrUsed(H5)    {ALIGN=}
  571. set html::ElemDeprecated(H5)        {ALIGN=}
  572. ensureset html::ElemLayout(H5) cr1
  573.  
  574. # H6
  575. set html::ElemAttrOptional(H6)    {ALIGN=}
  576. ensureset html::ElemAttrUsed(H6)    {ALIGN=}
  577. set html::ElemDeprecated(H6)        {ALIGN=}
  578. ensureset html::ElemLayout(H6) cr1
  579.  
  580. # HEAD
  581. set html::ElemAttrOptional(HEAD) {PROFILE=}
  582. ensureset html::ElemLayout(HEAD) cr2
  583.  
  584. # HR
  585. set html::ElemAttrOptional(HR)    {ALIGN= SIZE= WIDTH= COLOR= NOSHADE}
  586. set html::ElemExtension(HR)    {COLOR=}
  587. set html::ElemDeprecated(HR)    {ALIGN= SIZE= WIDTH= NOSHADE}
  588. ensureset html::ElemLayout(HR) open11
  589. set html::AttrChoices(HR%ALIGN=) {LEFT RIGHT CENTER}
  590.  
  591. # HTML
  592. set html::ElemAttrOptional(HTML) {}
  593. ensureset html::ElemLayout(HTML) cr2
  594.  
  595. # I
  596. set html::ElemAttrOptional(I) {}
  597. ensureset html::ElemLayout(I) nocr
  598.  
  599. # IFRAME
  600. set html::ElemAttrOptional(IFRAME) {SRC= NAME= WIDTH= HEIGHT= MARGINWIDTH= MARGINHEIGHT= SCROLLING=
  601. ALIGN= FRAMEBORDER= LONGDESC=}
  602. ensureset html::ElemAttrUsed(IFRAME) {SRC= NAME= WIDTH= HEIGHT= MARGINWIDTH= MARGINHEIGHT= SCROLLING= ALIGN=}
  603. set html::ElemDeprecated(IFRAME)    {ALIGN=}
  604. set html::AttrChoices(IFRAME%ALIGN=) {TOP MIDDLE BOTTOM LEFT RIGHT}
  605. ensureset html::ElemLayout(IFRAME) nocr
  606. set html::AttrType(IFRAME%NAME=) targetname
  607.  
  608. # IMG
  609. set html::ElemAttrRequired(IMG)    {SRC= ALT=}
  610. set html::ElemAttrOptional(IMG)    {LOWSRC= NAME= WIDTH= HEIGHT=  BORDER= 
  611. ALIGN= HSPACE= VSPACE= USEMAP= ISMAP LONGDESC= DYNSRC= LOOP= START= CONTROLS onAbort= onError= onLoad=}
  612. ensureset html::ElemAttrUsed(IMG)    {SRC= ALT= WIDTH= HEIGHT= BORDER= ALIGN= HSPACE= VSPACE=}
  613. set html::ElemExtension(IMG) {LOWSRC= CONTROLS DYNSRC= LOOP= START= onAbort= onError= onLoad=}
  614. set html::ElemDeprecated(IMG) {ALIGN= BORDER= HSPACE= VSPACE=}
  615. ensureset html::ElemLayout(IMG) open00
  616. set html::AttrChoices(IMG%ALIGN=) {TOP MIDDLE BOTTOM LEFT RIGHT}
  617.  
  618. # INPUT=TEXT
  619. set "html::ElemAttrOptional(INPUT TYPE=TEXT)"    {NAME= VALUE= SIZE= MAXLENGTH= DISABLED READONLY ACCESSKEY= TABINDEX=
  620. onFocus= onBlur= onChange= onSelect=}
  621. ensureset "html::ElemAttrUsed(INPUT TYPE=TEXT)"    {NAME= VALUE= SIZE= MAXLENGTH=}
  622. ensureset html::ElemLayout(INPUT) open01
  623.  
  624. # INPUT=CHECKBOX
  625. set "html::ElemAttrRequired(INPUT TYPE=CHECKBOX)"    {VALUE=}
  626. set "html::ElemAttrOptional(INPUT TYPE=CHECKBOX)"    {NAME= CHECKED DISABLED ACCESSKEY= TABINDEX=}
  627. ensureset "html::ElemAttrUsed(INPUT TYPE=CHECKBOX)"    {NAME= VALUE= CHECKED}
  628.  
  629. # INPUT=BUTTON
  630. set "html::ElemAttrOptional(INPUT TYPE=BUTTON)"    {NAME= VALUE= SIZE= DISABLED ACCESSKEY= TABINDEX=}
  631. ensureset "html::ElemAttrUsed(INPUT TYPE=BUTTON)"    {NAME= VALUE=}
  632.  
  633. # INPUT=RADIO
  634. set "html::ElemAttrRequired(INPUT TYPE=RADIO)"    {VALUE=}
  635. set "html::ElemAttrOptional(INPUT TYPE=RADIO)"    {NAME= CHECKED DISABLED ACCESSKEY= TABINDEX=}
  636. ensureset "html::ElemAttrUsed(INPUT TYPE=RADIO)"    {NAME= VALUE= CHECKED}
  637.  
  638. # INPUT=SUBMIT
  639. set "html::ElemAttrOptional(INPUT TYPE=SUBMIT)"    {NAME= VALUE= SIZE= DISABLED ACCESSKEY= TABINDEX=}
  640. ensureset "html::ElemAttrUsed(INPUT TYPE=SUBMIT)"    {NAME= VALUE=}
  641.  
  642. # INPUT=RESET
  643. set "html::ElemAttrOptional(INPUT TYPE=RESET)"    {NAME= VALUE= SIZE= DISABLED ACCESSKEY= TABINDEX=}
  644. ensureset "html::ElemAttrUsed(INPUT TYPE=RESET)"    {VALUE=}
  645.  
  646. # INPUT=PASSWORD
  647. set "html::ElemAttrOptional(INPUT TYPE=PASSWORD)"    {NAME= VALUE= SIZE= MAXLENGTH= DISABLED READONLY ACCESSKEY= TABINDEX=
  648. onFocus= onBlur= onChange= onSelect=}
  649. ensureset "html::ElemAttrUsed(INPUT TYPE=PASSWORD)"    {NAME= VALUE= SIZE= MAXLENGTH=}
  650.  
  651. # INPUT=HIDDEN
  652. set "html::ElemAttrOptional(INPUT TYPE=HIDDEN)"    {NAME= VALUE=}
  653. ensureset "html::ElemAttrUsed(INPUT TYPE=HIDDEN)"    {NAME= VALUE=}
  654.  
  655. # INPUT=IMAGE
  656. set "html::ElemAttrRequired(INPUT TYPE=IMAGE)"    {SRC=}
  657. set "html::ElemAttrOptional(INPUT TYPE=IMAGE)"    {NAME= VALUE= ALIGN= ALT= USEMAP= ISMAP DISABLED ACCESSKEY= TABINDEX=}
  658. ensureset "html::ElemAttrUsed(INPUT TYPE=IMAGE)"    {SRC= NAME= ALT=}
  659. set "html::ElemDeprecated(INPUT TYPE=IMAGE)" {ALIGN=}
  660. set "html::AttrChoices(INPUT TYPE=IMAGE%ALIGN=)"    {TOP MIDDLE BOTTOM LEFT RIGHT}
  661.  
  662. # INPUT=FILE
  663. set "html::ElemAttrOptional(INPUT TYPE=FILE)"    {NAME= VALUE= SIZE= MAXLENGTH= ACCEPT= DISABLED ACCESSKEY= TABINDEX=}
  664. ensureset "html::ElemAttrUsed(INPUT TYPE=FILE)" {NAME= SIZE= MAXLENGTH=}
  665.  
  666. # INS
  667. set html::ElemAttrOptional(INS) {CITE= DATETIME=}
  668. ensureset html::ElemAttrUsed(INS) {CITE= DATETIME=}
  669. ensureset html::ElemLayout(INS) cr0
  670.  
  671. # ISINDEX
  672. set html::ElemAttrOptional(ISINDEX)    {ACTION= PROMPT=}
  673. set html::ElemExtension(ISINDEX) {ACTION=}
  674. ensureset html::ElemLayout(ISINDEX) open11
  675.  
  676. # KBD
  677. set html::ElemAttrOptional(KBD) {}
  678. ensureset html::ElemLayout(KBD) nocr
  679.  
  680. # LABEL
  681. set html::ElemAttrOptional(LABEL) {FOR= ACCESSKEY= onFocus= onBlur=}
  682. ensureset html::ElemAttrUsed(LABEL) {FOR= ACCESSKEY=}
  683. ensureset html::ElemLayout(LABEL) nocr
  684.  
  685. # LEGEND
  686. set html::ElemAttrOptional(LEGEND) {ALIGN= ACCESSKEY=}
  687. ensureset html::ElemAttrUsed(LEGEND) {ALIGN= ACCESSKEY=}
  688. set html::ElemDeprecated(LEGEND) {ALIGN=}
  689. ensureset html::ElemLayout(LEGEND) cr0
  690. set html::AttrChoices(LEGEND%ALIGN=) {TOP BOTTOM LEFT RIGHT}
  691.  
  692. # LI
  693. set "html::ElemAttrOptional(LI IN UL)"    {TYPE=}
  694. ensureset "html::ElemAttrUsed(LI IN UL)" {TYPE=}
  695. set "html::ElemDeprecated(LI IN UL)"        {TYPE=}
  696. set "html::ElemAttrOptional(LI IN OL)"    {TYPE= VALUE=}
  697. ensureset "html::ElemAttrUsed(LI IN OL)" {TYPE= VALUE=}
  698. set "html::ElemDeprecated(LI IN OL)"        {TYPE= VALUE=}
  699. set "html::AttrType(LI IN OL%VALUE=)" integer
  700. set "html::AttrRange(LI IN OL%VALUE=)" {1:i}
  701. set "html::AttrType(LI IN OL%TYPE=)" oltype
  702. set "html::AttrChoices(LI IN OL%TYPE=)" {A a I i 1}
  703. set html::ElemAttrOptional(LI) {}
  704. html::FindOptionalLayout LI
  705.  
  706. # LINK
  707. set html::ElemAttrOptional(LINK)    {HREF= HREFLANG= TARGET= CHARSET= REL= REV= TYPE= MEDIA=}
  708. ensureset html::ElemAttrUsed(LINK) {HREF= REL= TYPE=}
  709. ensureset html::ElemLayout(LINK) open11
  710. set html::AttrType(LINK%TYPE=) contenttype
  711.  
  712. # MAP
  713. set html::ElemAttrRequired(MAP)    {NAME=}
  714. set html::ElemAttrOptional(MAP)    {}
  715. ensureset html::ElemLayout(MAP) cr2
  716. set html::AttrType(MAP%NAME=) anchor
  717.  
  718. # MENU
  719. set html::ElemAttrOptional(MENU) {COMPACT}
  720. ensureset html::ElemLayout(MENU) cr2
  721.  
  722. # META
  723. set html::ElemAttrRequired(META)    {CONTENT=}
  724. set html::ElemAttrOptional(META)    {NAME= HTTP-EQUIV= SCHEME=}
  725. ensureset html::ElemAttrUsed(META) {CONTENT= NAME= HTTP-EQUIV=}
  726. ensureset html::ElemLayout(META) open11
  727. set html::AttrType(META%NAME=) id
  728.  
  729. # NOFRAMES
  730. set html::ElemAttrOptional(NOFRAMES) {}
  731. ensureset html::ElemLayout(NOFRAMES) cr2
  732.  
  733. # NOSCRIPT
  734. set html::ElemAttrOptional(NOSCRIPT) {}
  735. ensureset html::ElemLayout(NOSCRIPT) cr2
  736.  
  737. # OBJECT
  738. set html::ElemAttrOptional(OBJECT) {CLASSID= CODEBASE= CODETYPE= ARCHIVE= DATA= NAME= TYPE= STANDBY=
  739. ALIGN= BORDER= WIDTH= HEIGHT= HSPACE= VSPACE= USEMAP= DECLARE TABINDEX=}
  740. ensureset html::ElemAttrUsed(OBJECT) {CLASSID= CODETYPE= ARCHIVE= DATA= NAME= TYPE= WIDTH= HEIGHT= STANDBY=}
  741. set html::ElemDeprecated(OBJECT) {ALIGN= BORDER= HSPACE= VSPACE=}
  742. ensureset html::ElemLayout(OBJECT) cr2
  743. set html::AttrType(OBJECT%TYPE=) contenttype
  744. set html::AttrChoices(OBJECT%ALIGN=) {TOP MIDDLE BOTTOM LEFT RIGHT}
  745.  
  746. # OL
  747. set html::ElemAttrOptional(OL)    {TYPE= START= COMPACT}
  748. ensureset html::ElemAttrUsed(OL) {TYPE= START=}
  749. set html::ElemDeprecated(OL)    {TYPE= START= COMPACT}
  750. ensureset html::ElemLayout(OL) cr2
  751. set html::AttrType(OL%TYPE=) oltype
  752. set html::AttrChoices(OL%TYPE=)    {A a I i 1}
  753. set html::AttrType(OL%START=) integer
  754. set html::AttrRange(OL%START=) {1:i}
  755.  
  756. # OPTGROUP
  757. set html::ElemAttrRequired(OPTGROUP) {LABEL=}
  758. set html::ElemAttrOptional(OPTGROUP) {DISABLED}
  759. ensureset html::ElemAttrUsed(OPTGROUP) {LABEL= DISABLED}
  760. ensureset html::ElemLayout(OPTGROUP) cr2
  761.  
  762. # OPTION
  763. set html::ElemAttrOptional(OPTION)    {VALUE= LABEL= SELECTED DISABLED}
  764. ensureset html::ElemAttrUsed(OPTION)    {VALUE= SELECTED}
  765. html::FindOptionalLayout OPTION
  766.  
  767. # P
  768. set html::ElemAttrOptional(P)    {ALIGN=}
  769. ensureset html::ElemAttrUsed(P)    {ALIGN=}
  770. set html::ElemDeprecated(P)        {ALIGN=}
  771. html::FindOptionalLayout P
  772.  
  773. # PARAM
  774. set html::ElemAttrRequired(PARAM)    {NAME=}
  775. set html::ElemAttrOptional(PARAM)    {VALUE= TYPE= VALUETYPE= ID=}
  776. ensureset html::ElemAttrUsed(PARAM) {NAME= VALUE=}
  777. ensureset html::ElemLayout(PARAM) open11
  778. set html::AttrType(PARAM%TYPE=) contenttype
  779.  
  780. # PRE
  781. set html::ElemAttrOptional1(PRE)    {WIDTH=}
  782. set html::ElemDeprecated(PRE)    {WIDTH=}
  783. ensureset html::ElemLayout(PRE) cr2
  784. set html::AttrType(PRE%WIDTH=) integer
  785.  
  786. # Q
  787. set html::ElemAttrOptional(Q) {CITE=}
  788. ensureset html::ElemLayout(Q) nocr
  789.  
  790. # S
  791. set html::ElemAttrOptional(S) {}
  792. ensureset html::ElemLayout(S) nocr
  793.  
  794. # SAMP
  795. set html::ElemAttrOptional(SAMP) {}
  796. ensureset html::ElemLayout(SAMP) nocr
  797.  
  798. # SCRIPT
  799. set html::ElemAttrRequired(SCRIPT) {TYPE=}
  800. set html::ElemAttrOptional(SCRIPT)    {LANGUAGE= SRC= ARCHIVE= DEFER CHARSET=}
  801. ensureset html::ElemAttrUsed(SCRIPT)    {TYPE= LANGUAGE= SRC=}
  802. set html::ElemExtension(SCRIPT) {ARCHIVE=}
  803. set html::ElemDeprecated(SCRIPT)    {LANGUAGE=}
  804. ensureset html::ElemLayout(SCRIPT) cr2
  805. set html::AttrType(SCRIPT%TYPE=) contenttype
  806.  
  807. # SELECT
  808. set html::ElemAttrOptional(SELECT)    {NAME= SIZE= TABINDEX= MULTIPLE DISABLED onFocus= onBlur= onChange=}
  809. ensureset html::ElemAttrUsed(SELECT)    {NAME= SIZE= MULTIPLE}
  810. ensureset html::ElemLayout(SELECT) cr2
  811.  
  812. # SMALL
  813. set html::ElemAttrOptional(SMALL) {}
  814. ensureset html::ElemLayout(SMALL) nocr
  815.  
  816. # SPAN
  817. set html::ElemAttrOptional(SPAN) {}
  818. ensureset html::ElemAttrUsed(SPAN)    {CLASS=}
  819. ensureset html::ElemLayout(SPAN) nocr
  820.  
  821. # STRIKE
  822. set html::ElemAttrOptional(STRIKE) {}
  823. ensureset html::ElemLayout(STRIKE) nocr
  824.  
  825. # STRONG
  826. set html::ElemAttrOptional(STRONG) {}
  827. ensureset html::ElemLayout(STRONG) nocr
  828.  
  829. # STYLE
  830. set html::ElemAttrRequired(STYLE) {TYPE=}
  831. set html::ElemAttrOptional(STYLE) {MEDIA= TITLE=}
  832. ensureset html::ElemAttrUsed(STYLE) {TYPE=}
  833. ensureset html::ElemLayout(STYLE) cr2
  834. set html::AttrType(STYLE%TYPE=) contenttype
  835.  
  836. # SUB
  837. set html::ElemAttrOptional(SUB) {}
  838. ensureset html::ElemLayout(SUB) nocr
  839.  
  840. # SUP
  841. set html::ElemAttrOptional(SUP) {}
  842. ensureset html::ElemLayout(SUP) nocr
  843.  
  844. # TABLE
  845. set html::ElemAttrOptional(TABLE)    {BORDER= CELLSPACING= CELLPADDING= COLS= WIDTH= HEIGHT=
  846. ALIGN= FRAME= RULES= SUMMARY= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  847. ensureset html::ElemAttrUsed(TABLE)    {BORDER= CELLSPACING= CELLPADDING=}
  848. set html::ElemExtension(TABLE) {COLS= HEIGHT= BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  849. set html::ElemDeprecated(TABLE) {ALIGN= BGCOLOR=}
  850. ensureset html::ElemLayout(TABLE) cr2
  851. set html::AttrType(TABLE%COLS=) integer
  852. set html::AttrChoices(TABLE%ALIGN=) {LEFT CENTER RIGHT}
  853.  
  854. # TBODY
  855. set html::ElemAttrOptional(TBODY) {ALIGN= VALIGN= CHAR= CHAROFF=}
  856. ensureset html::ElemAttrUsed(TBODY) {ALIGN= VALIGN=}
  857. html::FindOptionalLayout TBODY
  858. set html::AttrChoices(TBODY%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  859.  
  860. # TEXTAREA
  861. set html::ElemAttrRequired(TEXTAREA)    {ROWS= COLS=}
  862. set html::ElemAttrOptional(TEXTAREA)    {NAME= WRAP= ACCESSKEY= TABINDEX= DISABLED READONLY onFocus= onBlur= onChange= onSelect=}
  863. ensureset html::ElemAttrUsed(TEXTAREA) {ROWS= COLS= NAME=}
  864. set html::ElemExtension(TEXTAREA) {WRAP=}
  865. ensureset html::ElemLayout(TEXTAREA) cr0
  866. set html::AttrType(TEXTAREA%ROWS=) integer
  867. set html::AttrType(TEXTAREA%COLS=) integer
  868.  
  869. # TD
  870. set html::ElemAttrOptional(TD)    {ALIGN= VALIGN= CHAR= CHAROFF= COLSPAN= ROWSPAN= WIDTH= HEIGHT=
  871. NOWRAP ABBR= AXIS= HEADERS= SCOPE= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= 
  872. BORDERCOLORLIGHT= BACKGROUND=}
  873. ensureset html::ElemAttrUsed(TD)    {ALIGN= VALIGN= COLSPAN= ROWSPAN= WIDTH= NOWRAP}
  874. set html::ElemExtension(TD) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  875. set html::ElemDeprecated(TD) {NOWRAP BGCOLOR= WIDTH= HEIGHT=}
  876. html::FindOptionalLayout TD
  877. set html::AttrChoices(TD%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  878.  
  879. # TFOOT
  880. set html::ElemAttrOptional(TFOOT) {ALIGN= VALIGN= CHAR= CHAROFF=}
  881. ensureset html::ElemAttrUsed(TFOOT) {ALIGN= VALIGN=}
  882. html::FindOptionalLayout TFOOT
  883. set html::AttrChoices(TFOOT%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  884.  
  885. # TH
  886. set html::ElemAttrOptional(TH)    {ALIGN= VALIGN= CHAR= CHAROFF= COLSPAN= ROWSPAN= WIDTH= HEIGHT=
  887. NOWRAP ABBR= AXIS= HEADERS= SCOPE= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK= 
  888. BORDERCOLORLIGHT= BACKGROUND=}
  889. ensureset html::ElemAttrUsed(TH)    {ALIGN= VALIGN= COLSPAN= ROWSPAN= WIDTH= NOWRAP}
  890. set html::ElemExtension(TH) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  891. set html::ElemDeprecated(TH) {NOWRAP BGCOLOR= WIDTH= HEIGHT=}
  892. html::FindOptionalLayout TH
  893. set html::AttrChoices(TH%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  894.  
  895. # THEAD
  896. set html::ElemAttrOptional(THEAD) {ALIGN= VALIGN= CHAR= CHAROFF=}
  897. ensureset html::ElemAttrUsed(THEAD) {ALIGN= VALIGN=}
  898. html::FindOptionalLayout THEAD
  899. set html::AttrChoices(THEAD%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  900.  
  901. # TITLE
  902. set html::ElemAttrOptional(TITLE) {}
  903. ensureset html::ElemLayout(TITLE) cr1
  904.  
  905. # TR
  906. set html::ElemAttrOptional(TR)    {ALIGN= VALIGN= CHAR= CHAROFF= BGCOLOR= BORDERCOLOR= BORDERCOLORDARK=
  907. BORDERCOLORLIGHT= BACKGROUND=}
  908. ensureset html::ElemAttrUsed(TR)    {ALIGN= VALIGN=}
  909. set html::ElemExtension(TR) {BORDERCOLOR= BORDERCOLORDARK= BORDERCOLORLIGHT= BACKGROUND=}
  910. set html::ElemDeprecated(TR) {BGCOLOR=}
  911. html::FindOptionalLayout TR
  912. set html::AttrChoices(TR%ALIGN=) {LEFT CENTER RIGHT JUSTIFY CHAR}
  913.  
  914. # TT
  915. set html::ElemAttrOptional(TT) {}
  916. ensureset html::ElemLayout(TT) nocr
  917.  
  918. # U
  919. set html::ElemAttrOptional(U) {}
  920. ensureset html::ElemLayout(U) nocr
  921.  
  922. # UL
  923. set html::ElemAttrOptional(UL)    {TYPE= COMPACT}
  924. ensureset html::ElemAttrUsed(UL) {TYPE=}
  925. set html::ElemDeprecated(UL)    {TYPE= COMPACT}
  926. ensureset html::ElemLayout(UL) cr2
  927.  
  928. # VAR
  929. set html::ElemAttrOptional(VAR) {}
  930. ensureset html::ElemLayout(VAR) nocr
  931.  
  932. #===============================================================================
  933. # Extensions
  934. #===============================================================================
  935.  
  936. # BGSOUND
  937. set html::ElemAttrRequired(BGSOUND) {SRC=}
  938. set html::ElemAttrOptional(BGSOUND) {LOOP=}
  939. ensureset html::ElemAttrUsed(BGSOUND) {SRC= LOOP=}
  940. ensureset html::ElemLayout(BGSOUND) open11
  941.  
  942. # BLINK
  943. set html::ElemAttrOptional(BLINK) {}
  944. ensureset html::ElemLayout(BLINK) nocr
  945.  
  946. # EMBED
  947. set html::ElemAttrOptional(EMBED) {SRC= TYPE= WIDTH= HEIGHT= UNITS= HSPACE= VSPACE= BORDER= ALIGN=
  948. FRAMEBORDER= NAME= HIDDEN= PALETTE= PLUGINSURL= PLUGINSPAGE=}
  949. ensureset html::ElemAttrUsed(EMBED) {SRC= TYPE= WIDTH= HEIGHT=}
  950. ensureset html::ElemLayout(EMBED) open00
  951. set html::AttrType(EMBED%TYPE=) contenttype
  952. set html::AttrType(EMBED%WIDTH=) integer
  953. set html::AttrType(EMBED%HEIGHT=) integer
  954. set html::AttrChoices(EMBED%ALIGN=) {TOP MIDDLE BOTTOM LEFT RIGHT}
  955. set html::AttrChoices(EMBED%FRAMEBORDER=) {NO}
  956.  
  957. # ILAYER
  958. set html::ElemAttrOptional(ILAYER) {LEFT= TOP= PAGEX= PAGEY= NAME= SRC= WIDTH= HEIGHT= CLIP= Z-INDEX=
  959. ABOVE= BELOW= VISIBILITY= BGCOLOR= BACKGROUND= onLoad=}
  960. ensureset html::ElemAttrUsed(ILAYER) {LEFT= TOP= SRC= WIDTH= HEIGHT= VISIBILITY=}
  961. ensureset html::ElemLayout(ILAYER) cr0
  962.  
  963. # KEYGEN
  964. set html::ElemAttrRequired(KEYGEN) {NAME=}
  965. set html::ElemAttrOptional(KEYGEN) {CHALLENGE=}
  966. ensureset html::ElemAttrUsed(KEYGEN) {NAME=}
  967. ensureset html::ElemLayout(KEYGEN) open11
  968.  
  969. # LAYER
  970. set html::ElemAttrOptional(LAYER) {LEFT= TOP= PAGEX= PAGEY= NAME= SRC= WIDTH= HEIGHT= CLIP= Z-INDEX=
  971. ABOVE= BELOW= VISIBILITY= BGCOLOR= BACKGROUND= onLoad=}
  972. ensureset html::ElemAttrUsed(LAYER) {LEFT= TOP= SRC= WIDTH= HEIGHT= VISIBILITY=}
  973. ensureset html::ElemLayout(LAYER) cr2
  974.  
  975. # MARQUEE
  976. set html::ElemAttrOptional(MARQUEE) {BEHAVIOR= DIRECTION= ALIGN= LOOP= WIDTH= HEIGHT=
  977. HSPACE= VSPACE= BGCOLOR= SCROLLAMOUNT= SCROLLDELAY=}
  978. ensureset html::ElemAttrUsed(MARQUEE) {BEHAVIOR= DIRECTION= LOOP=}
  979. ensureset html::ElemLayout(MARQUEE) cr0
  980. set html::AttrChoices(MARQUEE%ALIGN=) {TOP MIDDLE BOTTOM}
  981.  
  982. # MULTICOL
  983. set html::ElemAttrRequired(MULTICOL)    {COLS=}
  984. set html::ElemAttrOptional(MULTICOL)    {GUTTER= WIDTH=}
  985. ensureset html::ElemAttrUsed(MULTICOL) {COLS= GUTTER= WIDTH=}
  986. ensureset html::ElemLayout(MULTICOL) cr2
  987. set html::AttrType(MULTICOL%COLS=) integer
  988. set html::AttrRange(MULTICOL%COLS=) {2:i}
  989.  
  990. # NOBR
  991. set html::ElemAttrOptional(NOBR) {}
  992. ensureset html::ElemLayout(NOBR) nocr
  993.  
  994. # NOEMBED
  995. set html::ElemAttrOptional(NOEMBED) {}
  996. ensureset html::ElemLayout(NOEMBED) cr2
  997.  
  998. # NOLAYER
  999. set html::ElemAttrOptional(NOLAYER) {}
  1000. ensureset html::ElemLayout(NOLAYER) cr2
  1001.  
  1002. # SERVER
  1003. set html::ElemAttrOptional(SERVER) {}
  1004. ensureset html::ElemLayout(SERVER) cr2
  1005.  
  1006. # SPACER
  1007. set html::ElemAttrRequired(SPACER)    {TYPE=}
  1008. set html::ElemAttrOptional(SPACER)    {SIZE= WIDTH= HEIGHT= ALIGN=}
  1009. ensureset html::ElemAttrUsed(SPACER) {TYPE= SIZE= WIDTH= HEIGHT= ALIGN=}
  1010. ensureset html::ElemLayout(SPACER) open00
  1011. set html::AttrChoices(SPACER%TYPE=) {HORIZONTAL VERTICAL BLOCK}
  1012. set html::AttrChoices(SPACER%ALIGN=) {TOP MIDDLE BOTTOM LEFT RIGHT}
  1013.  
  1014. # WBR
  1015. set html::ElemAttrOptional(WBR)     {}
  1016. ensureset html::ElemLayout(WBR) open01
  1017.  
  1018. # Add attrs CLASS, ID, STYLE, TITLE.
  1019. # All except {BASE BASEFONT HEAD HTML
  1020. # META PARAM SCRIPT STYLE TITLE WBR BGSOUND KEYGEN SERVER}
  1021. foreach tmp {A ABBR ACRONYM ADDRESS APPLET AREA B BDO BIG BLINK BLOCKQUOTE BODY BR
  1022. BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM
  1023. EMBED FIELDSET FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HR I IFRAME
  1024. ILAYER IMG {INPUT TYPE=BUTTON} {INPUT TYPE=CHECKBOX}
  1025. {INPUT TYPE=FILE} {INPUT TYPE=HIDDEN} {INPUT TYPE=IMAGE} {INPUT TYPE=PASSWORD}
  1026. {INPUT TYPE=RADIO} {INPUT TYPE=RESET} {INPUT TYPE=SUBMIT}
  1027. {INPUT TYPE=TEXT} INS ISINDEX KBD LABEL LAYER LEGEND LI {LI IN OL}
  1028. {LI IN UL} LINK MAP MARQUEE MENU MULTICOL NOBR NOEMBED NOFRAMES
  1029. NOLAYER NOSCRIPT OBJECT OL OPTGROUP OPTION P PRE Q S SAMP 
  1030. SELECT SMALL SPACER SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD
  1031. TEXTAREA TFOOT TH THEAD TR TT U UL VAR} {
  1032.     lappend html::ElemAttrOptional($tmp) CLASS= ID= STYLE= TITLE=
  1033. }
  1034.  
  1035. # Add attrs LANG, DIR.
  1036. # All except {APPLET BASE BASEFONT BDO BR FRAME FRAMESET IFRAME
  1037. # PARAM SCRIPT WBR BGSOUND KEYGEN SERVER}
  1038. foreach tmp {A ABBR ACRONYM ADDRESS AREA B BIG BLINK BLOCKQUOTE BODY BUTTON CAPTION
  1039. CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM EMBED FIELDSET
  1040. FONT FORM H1 H2 H3 H4 H5 H6 HEAD HR HTML I ILAYER IMG {INPUT TYPE=BUTTON}
  1041. {INPUT TYPE=CHECKBOX} {INPUT TYPE=FILE} {INPUT TYPE=HIDDEN} 
  1042. {INPUT TYPE=IMAGE} {INPUT TYPE=PASSWORD} {INPUT TYPE=RADIO} {INPUT TYPE=RESET}
  1043. {INPUT TYPE=SUBMIT} {INPUT TYPE=TEXT} INS ISINDEX KBD LABEL LAYER LEGEND LI
  1044. {LI IN OL} {LI IN UL} LINK MAP MARQUEE MENU META MULTICOL NOBR NOEMBED NOFRAMES
  1045. NOLAYER NOSCRIPT OBJECT OL OPTGROUP OPTION P PRE Q S SAMP
  1046. SELECT SMALL SPACER SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD
  1047. TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR} {
  1048.     lappend html::ElemAttrOptional($tmp) LANG= DIR=
  1049. }
  1050.  
  1051. # Add event handlers
  1052. # All except {APPLET BASE BASEFONT BDO BR FONT FRAME FRAMESET HEAD HTML
  1053. # IFRAME ISINDEX META PARAM SCRIPT STYLE TITLE WBR BGSOUND KEYGEN SERVER}
  1054. foreach tmp {A ABBR ACRONYM ADDRESS AREA B BIG BLINK BLOCKQUOTE BODY BUTTON CAPTION
  1055. CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM EMBED FIELDSET
  1056. FORM H1 H2 H3 H4 H5 H6 HR I ILAYER IMG {INPUT TYPE=BUTTON} {INPUT TYPE=CHECKBOX}
  1057. {INPUT TYPE=FILE} {INPUT TYPE=HIDDEN} {INPUT TYPE=IMAGE} {INPUT TYPE=PASSWORD} 
  1058. {INPUT TYPE=RADIO} {INPUT TYPE=RESET} {INPUT TYPE=SUBMIT}
  1059. {INPUT TYPE=TEXT} INS KBD LABEL LAYER LEGEND LI {LI IN OL}
  1060. {LI IN UL} LINK MAP MARQUEE MENU MULTICOL NOBR NOEMBED NOFRAMES
  1061. NOLAYER NOSCRIPT OBJECT OL OPTGROUP OPTION P PRE Q S SAMP 
  1062. SELECT SMALL SPACER SPAN STRIKE STRONG SUB SUP TABLE TBODY TD
  1063. TEXTAREA TFOOT TH THEAD TR TT U UL VAR} {
  1064.     lappend html::ElemAttrOptional($tmp) onClick= onDblClick= onMouseDown= onMouseUp= onMouseOver= \
  1065.       onMouseMove= onMouseOut= onKeyPress= onKeyDown= onKeyUp=
  1066. }
  1067.  
  1068. unset tmp
  1069.  
  1070. # Loading custom elements
  1071. if {[html::AdditionsExists] && [catch {html::ReadCache "Additions cache"}]} {
  1072.     if {[catch {html::CreateAdditionCaches;    html::ReadCache "Additions cache"}]} {
  1073.         alertnote "Loading of custom HTML elements failed."
  1074.     }
  1075. }
  1076.